home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 15 / CU Amiga Magazine's Super CD-ROM 15 (1997)(EMAP Images)(GB)[!][issue 1997-10].iso / CUCD / Utilities / Post / Source / SimpleRexx.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-28  |  3.6 KB  |  133 lines

  1. /*
  2.  * Simple ARexx interface...
  3.  *
  4.  * This is a very "Simple" interface...
  5.  */
  6.  
  7. #ifndef    SIMPLE_REXX_H
  8. #define    SIMPLE_REXX_H
  9.  
  10. #include    <exec/types.h>
  11. #include    <exec/nodes.h>
  12. #include    <exec/lists.h>
  13. #include    <exec/ports.h>
  14.  
  15. #include    <rexx/storage.h>
  16. #include    <rexx/rxslib.h>
  17.  
  18. /*
  19.  * A structure for the ARexx handler context
  20.  * This is *VERY* *PRIVATE* and should not be touched...
  21.  */
  22. struct    ARexxContext
  23. {
  24. struct    MsgPort    *ARexxPort;    /* The port messages come in at... */
  25.     long    Outstanding;    /* The count of outstanding ARexx messages... */
  26.     char    PortName[24];    /* The port name goes here... */
  27.     char    ErrorName[28];    /* The name of the <base>.LASTERROR... */
  28.     char    Extension[8];    /* Default file name extension... */
  29. };
  30.  
  31. /*
  32.  * This is the handle that SimpleRexx will give you
  33.  * when you initialize an ARexx port...
  34.  *
  35.  */
  36.  
  37. typedef struct ARexxContext * AREXXCONTEXT;
  38.  
  39.  
  40. /*
  41.  * The value of RexxMsg (from GetARexxMsg) if there was an error returned
  42.  */
  43. #define    REXX_RETURN_ERROR    ((struct RexxMsg *)-1L)
  44.  
  45. /*
  46.  * This function closes down the ARexx context that was opened
  47.  * with InitARexx...
  48.  */
  49. void FreeARexx(AREXXCONTEXT);
  50.  
  51. /*
  52.  * This routine initializes an ARexx port for your process
  53.  * This should only be done once per process.  You must call it
  54.  * with a valid application name and you must use the handle it
  55.  * returns in all other calls...
  56.  *
  57.  * NOTE:  The AppName should not have spaces in it...
  58.  *        Example AppNames:  "MyWord" or "FastCalc" etc...
  59.  *        The name *MUST* be less that 16 characters...
  60.  *        If it is not, it will be trimmed...
  61.  *        The name will also be UPPER-CASED...
  62.  *
  63.  * NOTE:  The Default file name extension, if NULL will be
  64.  *        "rexx"  (the "." is automatic)
  65.  */
  66. AREXXCONTEXT InitARexx(char *,char *);
  67.  
  68. /*
  69.  * This function returns the port name of your ARexx port.
  70.  * It will return NULL if there is no ARexx port...
  71.  *
  72.  * This string is *READ ONLY*  You *MUST NOT* modify it...
  73.  */
  74. char *ARexxName(AREXXCONTEXT);
  75.  
  76. /*
  77.  * This function returns the signal mask that the Rexx port is
  78.  * using.  It returns NULL if there is no signal...
  79.  *
  80.  * Use this signal bit in your Wait() loop...
  81.  */
  82. ULONG ARexxSignal(AREXXCONTEXT);
  83.  
  84. /*
  85.  * This function returns a structure that contains the commands sent from
  86.  * ARexx...  You will need to parse it and return the structure back
  87.  * so that the memory can be freed...
  88.  *
  89.  * This returns NULL if there was no message...
  90.  */
  91. struct RexxMsg *GetARexxMsg(AREXXCONTEXT);
  92.  
  93. /*
  94.  * Use this to return a ARexx message...
  95.  *
  96.  * If you wish to return something, it must be in the RString.
  97.  * If you wish to return an Error, it must be in the Error.
  98.  */
  99. void ReplyARexxMsg(AREXXCONTEXT,struct RexxMsg *,char *,LONG);
  100.  
  101. /*
  102.  * This function will send a string to ARexx...
  103.  *
  104.  * The default host port will be that of your task...
  105.  *
  106.  * If you set StringFile to TRUE, it will set that bit for the message...
  107.  *
  108.  * Returns TRUE if it send the message, FALSE if it did not...
  109.  */
  110. short SendARexxMsg(AREXXCONTEXT,char *,short);
  111.  
  112. /*
  113.  * This function will set an error string for the ARexx
  114.  * application in the variable defined as <appname>.LASTERROR
  115.  *
  116.  * Note that this can only happen if there is an ARexx message...
  117.  *
  118.  * This returns TRUE if it worked, FALSE if it did not...
  119.  */
  120. short SetARexxLastError(AREXXCONTEXT,struct RexxMsg *,char *);
  121.  
  122. /*
  123.  * This function will set a variable for the ARexx
  124.  * application in the variable defined as <appname>.variable
  125.  *
  126.  * Note that this can only happen if there is an ARexx message...
  127.  *
  128.  * This returns TRUE if it worked, FALSE if it did not...
  129.  */
  130. short SetARexxVariable(AREXXCONTEXT,struct RexxMsg *,char *, char *);
  131.  
  132. #endif    /* SIMPLE_REXX_H */
  133.